﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using MyConnect.SQLServer;
using MyUtility;
using System.Web;

namespace MyAuction
{
    /// <summary>
    /// Đấu giá SMS
    /// </summary>
    public class SMSSession : Session
    {
        MyExecuteData mExec;
        MyGetData mGet;

         public SMSSession()
        {
            mExec = new MyExecuteData();
            mGet = new MyGetData();
        }
         public SMSSession(string KeyConnect_InConfig)
        {
            mExec = new MyExecuteData(KeyConnect_InConfig);
            mGet = new MyGetData(KeyConnect_InConfig);
        }

        /// <summary>
        /// Tạo ID cho Session
        /// </summary>
        /// <returns></returns>
         public string CreateSessionID()
         {
             try
             {
                 string PrefixCode = "S";
                 string Code =  PrefixCode + MySecurity.GenerateString(3);
                 while (true)
                 {
                     DataTable mTable = Select(2, Code);
                     if (mTable != null && mTable.Rows.Count == 0)
                     {
                         break;
                     }
                     else
                     {
                         Code = PrefixCode + MySecurity.CreateCode(4);
                     }
                 }

                 return Code;
             }
             catch (Exception ex)
             {
                 throw ex;
             }
         }
         /// <summary>
         /// Tạo 1 Dataset mẫu
         /// </summary>
         /// <returns></returns>
         public DataSet CreateDataSet()
         {
             try
             {
                 string[] mPara = { "Type" };
                 string[] mValue = { "0" };
                 DataSet mSet = mGet.GetDataSet("Sp_SMSSession_Select", mPara, mValue);
                 if (mSet != null && mSet.Tables.Count >= 1)
                 {
                     mSet.DataSetName = "Parent";
                     mSet.Tables[0].TableName = "Child";
                 }
                 return mSet;
             }
             catch (Exception ex)
             {
                 throw ex;
             }
         }

         /// <summary>
         /// Lấy dữ liệu về SMSSession
         /// </summary>
         /// <param name="Type">Cách thức lấy
         /// <para>Type = 0: Lấy dữ liệu mẫu</para>
         /// <para>Type = 1: Lấy thông tin chi tiết 1 record (Para_1 = SMSSessionID)</para>
         /// <para>Type = 2: Lấy SessionDI dựa vào SessionID truyền vào</para>
         /// </param>
         /// <param name="Para_1"></param>
         /// <returns></returns>
         public DataTable Select(int? Type, string Para_1)
         {
             try
             {
                 string[] mpara = { "Type", "Para_1" };
                 string[] mValue = { Type.ToString(), Para_1 };
                 return mGet.GetDataTable("Sp_SMSSession_Select", mpara, mValue);
             }
             catch (Exception ex)
             {
                 throw ex;
             }
         }

         /// <summary>
         /// Insert dữ liệu
         /// </summary>
         /// <param name="Type"></param>
         /// <param name="XMLContent"></param>
         /// <returns></returns>
         public bool Insert(int? Type, string XMLContent)
         {
             try
             {
                 string[] mpara = { "Type", "XMLContent" };
                 string[] mValue = { Type.ToString(), XMLContent };
                 if (mExec.ExecProcedure("Sp_SMSSession_Insert", mpara, mValue) > 0)
                 {
                     return true;
                 }
                 else
                 {
                     return false;
                 }
             }
             catch (SqlException ex)
             {
                 throw ex;
             }
         }


         /// <summary>
         /// 
         /// </summary>
         /// <param name="Type">Type = 0: </param>
         /// <param name="XMLContent"></param>
         /// <returns></returns>
         public bool Update(int? Type, string XMLContent)
         {
             try
             {
                 string[] mpara = { "Type", "XMLContent" };
                 string[] mValue = { Type.ToString(), XMLContent };
                 if (mExec.ExecProcedure("Sp_SMSSession_Update", mpara, mValue) > 0)
                 {
                     return true;
                 }
                 else
                 {
                     return false;
                 }
             }
             catch (SqlException ex)
             {
                 throw ex;
             }
         }


         /// <summary>
         /// 
         /// </summary>
         /// <param name="Type"></param>
         /// <param name="XMLContent"></param>
         /// <returns></returns>
         public bool Delete(int? Type, string XMLContent)
         {
             try
             {
                 string[] mpara = { "Type", "XMLContent" };
                 string[] mValue = { Type.ToString(), XMLContent };
                 if (mExec.ExecProcedure("Sp_SMSSession_Delete", mpara, mValue) > 0)
                 {
                     return true;

                 }
                 else
                 {
                     return false;
                 }
             }
             catch (SqlException ex)
             {
                 throw ex;
             }
         }


         /// <summary>
         /// 
         /// </summary>
         /// <param name="Type"></param>
         /// <param name="IsActive"></param>
         /// <param name="XMLContent"></param>
         /// <returns></returns>
         public bool Active(int? Type, bool IsActive, string XMLContent)
         {
             try
             {
                 string[] mpara = { "Type", "IsActive", "XMLContent", };
                 string[] mValue = { Type.ToString(), IsActive.ToString(), XMLContent };
                 if (mExec.ExecProcedure("Sp_SMSSession_Active", mpara, mValue) > 0)
                 {
                     return true;
                 }
                 else
                 {
                     return false;
                 }
             }
             catch (SqlException ex)
             {
                 throw ex;
             }
         }

        /// <summary>
        /// Lấy tổng số dòng dành cho phân trang
        /// </summary>
        /// <param name="Type">Tìm kiếm theo kiểu nào
        /// <para>Type = 0: Tìm kiếm tất cả</para>
        /// <para>Type = 1: Tìm kiếm theo tên</para>
        /// </param>
        /// <param name="SearchContent">Nội dung cần tìm kiếm</param>
        /// <param name="StatusID">Tình trạng của Phiên đấu giá cần tìm</param>
        /// <param name="SessionTypeID">Loại phiên đấu giá</param>
        /// <returns></returns>
         public int TotalRow(int? Type, string SearchContent, int? StatusID, int? SessionTypeID)
         {
             try
             {
                 string[] mpara = { "Type", "SearchContent", "StatusID", "SessionTypeID", "IsTotalRow" };
                 string[] mValue = { Type.ToString(), SearchContent, StatusID.ToString(), SessionTypeID.ToString(), true.ToString() };
                 return (int)mGet.GetExecuteScalar("Sp_SMSSession_Search", mpara, mValue);
             }
             catch (Exception ex)
             {
                 throw ex;
             }
         }

        /// <summary>
        /// Lấy dữ liệu dành cho phân trang
        /// </summary>
         /// <param name="Type">Tìm kiếm theo kiểu nào
         /// <para>Type = 0: Tìm kiếm tất cả</para>
         /// <para>Type = 1: Tìm kiếm theo tên</para>
         /// </param>
        /// <param name="BeginRow">Index của row bắt đầu cần lấy</param>
         /// <param name="EndRow">Index của row cuối cần lấy</param>
         /// <param name="SearchContent">Nội dung cần tìm kiếm</param>
         /// <param name="StatusID">Tình trạng của Phiên đấu giá cần tìm</param>
         /// <param name="SessionTypeID">Loại phiên đấu giá</param>
        /// <param name="OrderByColumn">Tên column cần muốn Sắp xếp</param>
        /// <returns></returns>
         public DataTable Search(int? Type, int BeginRow, int EndRow, string SearchContent, int? StatusID, int? SessionTypeID, string OrderByColumn)
         {
             try
             {
                 string[] mpara = { "Type", "BeginRow", "EndRow", "SearchContent", "StatusID", "SessionTypeID", "OrderByColumn", "IsTotalRow" };
                 string[] mValue = { Type.ToString(), BeginRow.ToString(), EndRow.ToString(), SearchContent, StatusID.ToString(), SessionTypeID.ToString(), OrderByColumn, false.ToString() };
                 return mGet.GetDataTable("Sp_SMSSession_Search", mpara, mValue);
             }
             catch (Exception ex)
             {
                 throw ex;
             }
         }


    }
}
